package problems.contest;

import java.util.Arrays;
import java.util.HashSet;

/**
 * 第 356 场周赛
 * <p>https://leetcode.cn/contest/weekly-contest-356/</p>
 *
 * @author dubulingbo, 2023/7/30 10:25.
 */
public class WCT356 {

    /**
     * T1|
     */


    /**
     * T2|
     */
    public int countCompleteSubarrays(int[] nums) {
        boolean[] map = new boolean[2001];
        int total = 0;

        for (int num : nums) {
            if (!map[num]) ++total;
            map[num] = true;
        }

        int[] cntMap = new int[2001];
        int c = 0;
        int n = nums.length;
        int ans = 0;




        for (int i = 0; i < n; ++i) {
            c += cntMap[nums[i]] == 0 ? 1 : 0;
            ++cntMap[nums[i]];
            if (c == total) {
                // 找到一个最短的子数组
                int j = i + 1;
                while (j < n && cntMap[nums[j]] > 0) ++j;
                ans += j - i;
                --cntMap[nums[i]];
            }
        }

        return ans;
    }


    /**
     * T3|
     */


}
